import type { ErrorMessageMode } from '#/axios'
import { useMessage } from '@/hooks/web/useMessage'
// import router from '@/router';
// import { PageEnum } from '@/enums/pageEnum';
import { useUserStoreWithOut } from '@/store/modules/user'
import projectSetting from '@/settings/projectSetting'
import { SessionTimeoutProcessingEnum } from '@/enums/appEnum'

const { createMessage, createErrorModal } = useMessage()
const error = createMessage.error!
const stp = projectSetting.sessionTimeoutProcessing

export function checkStatus(status: number, msg: string, errorMessageMode: ErrorMessageMode = 'message'): void {
  const userStore = useUserStoreWithOut()
  let errMessage = ''

  switch (status) {
  case 400:
    errMessage = `${msg}`
    break
    // 401: Not logged in
    // Jump to the login page if not logged in, and carry the path of the current page
    // Return to the current page after successful login. This step needs to be operated on the login page.
  case 401:
    userStore.setToken(undefined)
    errMessage = msg || '用户没有权限（令牌、用户名、密码错误）！'
    if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) {
      userStore.setSessionTimeout(true)
    } else {
      userStore.logout(true)
    }
    break
  case 403:
    errMessage = '用户得到授权，但是访问是被禁止的！'
    break
    // 404请求不存在
  case 404:
    errMessage = '网络请求错误,未找到该资源！'
    break
  case 405:
    errMessage = '网络请求错误,请求方法未允许！'
    break
  case 408:
    errMessage = '网络请求超时！'
    break
  case 500:
    errMessage = '服务器错误,请联系管理员！'
    break
  case 501:
    errMessage = '网络未实现！'
    break
  case 502:
    errMessage = '网络错误！'
    break
  case 503:
    errMessage = '服务不可用，服务器暂时过载或维护！'
    break
  case 504:
    errMessage = '网络超时！'
    break
  case 505:
    errMessage = 'HTTP版本不支持该请求！'
    break
  default:
  }

  if (errMessage) {
    if (errorMessageMode === 'modal') {
      createErrorModal({ title: '错误提示', message: errMessage })
    } else if (errorMessageMode === 'message') {
      error({ message: errMessage, key: `global_error_message_status_${status}` })
    }
  }
}
